package com.tencent.externalstoragebar.evetntools;

import android.util.Log;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public interface GlobalTouchListener {
    //全局触摸监听接口
    //一个类实现这个接口,重写里面的使用方法,调用action方法运行

    //运行方法
    public default void action(){
        new Thread(new Runnable() {
            @Override
            public void run() {
                execShellCmd(AnalyticData.cmd);
            }
        }).start();
    }

    //结束方法
    //实现这个接口的类需要重写这个方法来结束
    //返回true表示结束
    public default boolean over(){
        return false;
    }

    //执cmd命令方法
    public default void execShellCmd(String cmd) {
        //Log.d("acl", "执行命令: " + cmd);
        BufferedReader reader = null;
        try {
            // 使用 "su -c <command>" 来执行需要root权限的命令
            Process process = Runtime.getRuntime().exec("su -c " + cmd);

            // 读取命令的标准输出
            reader = new BufferedReader(new InputStreamReader(process.getInputStream()));

            String line;
            while ((line = reader.readLine()) != null) {
                usageData(line);//拿到数据后做什么
                //Log.d("acl",line);

                //如果要停止的话
                if (over()){
                    break;
                }
            }

            // 等待命令执行完成
            int exitCode = process.waitFor();
            //Log.d("acl", "命令执行完成，返回值: " + exitCode);

        } catch (IOException e) {
            e.printStackTrace();
            Log.e("acl", "执行命令时发生IO异常: " + e.getMessage());
        } catch (InterruptedException e) {
            e.printStackTrace();
            Log.e("acl", "等待命令执行时被中断: " + e.getMessage());
        } finally {
            try {
                if (reader != null) {
                    reader.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    //这里写一个更新数据方法


    //重写这个方法表示拿到数据后要干嘛
    abstract void usageData(String line) ;

}
